From 83dc9406f346726ca296bd8da6fb6eb4561d3897 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 29 Mar 2017 12:58:45 +0300 Subject: [PATCH] Fix false positive about unused replace --- src/cargo/ops/resolve.rs | 16 ++++++------ tests/overrides.rs | 53 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/src/cargo/ops/resolve.rs b/src/cargo/ops/resolve.rs index 03825e13e..9a13ac5c9 100644 --- a/src/cargo/ops/resolve.rs +++ b/src/cargo/ops/resolve.rs @@ -49,6 +49,14 @@ pub fn resolve_ws_precisely<'a>(ws: &Workspace<'a>, add_overrides(&mut registry, ws)?; + for &(ref replace_spec, ref dep) in ws.root_replace() { + if !resolve.iter().any(|r| replace_spec.matches(r) && !dep.matches_id(r)) { + ws.config().shell().warn( + format!("package replacement is not used: {}", replace_spec) + )? + } + } + Some(resolve) } else { None @@ -69,14 +77,6 @@ pub fn resolve_ws_precisely<'a>(ws: &Workspace<'a>, method, resolve.as_ref(), None, specs)?; - for &(ref replace_spec, _) in ws.root_replace() { - if !resolved_with_overrides.replacements().keys().any(|r| replace_spec.matches(r)) { - ws.config().shell().warn( - format!("package replacement is not used: {}", replace_spec) - )? - } - } - let packages = get_resolved_packages(&resolved_with_overrides, registry); Ok((packages, resolved_with_overrides)) diff --git a/tests/overrides.rs b/tests/overrides.rs index 24d841905..0941f774d 100644 --- a/tests/overrides.rs +++ b/tests/overrides.rs @@ -927,6 +927,59 @@ fn overriding_nonexistent_no_spurious() { ").with_stdout("")); } +#[test] +fn no_warnings_when_replace_is_used_in_another_workspace_member() { + Package::new("foo", "0.1.0").publish(); + Package::new("bar", "0.1.0").publish(); + + let p = project("ws") + .file("Cargo.toml", r#" + [workspace] + members = [ "first_crate", "second_crate"] + + [replace] + "foo:0.1.0" = { path = "local_foo" }"#) + .file("first_crate/Cargo.toml", r#" + [package] + name = "first_crate" + version = "0.1.0" + + [dependencies] + foo = "0.1.0" + "#) + .file("first_crate/src/lib.rs", "") + .file("second_crate/Cargo.toml", r#" + [package] + name = "second_crate" + version = "0.1.0" + "#) + .file("second_crate/src/lib.rs", "") + .file("local_foo/Cargo.toml", r#" + [package] + name = "foo" + version = "0.1.0" + "#) + .file("local_foo/src/lib.rs", ""); + p.build(); + + assert_that(p.cargo("build").cwd(p.root().join("first_crate")), + execs().with_status(0) + .with_stdout("") + .with_stderr("\ +[UPDATING] registry `[..]` +[COMPILING] foo v0.1.0 ([..]) +[COMPILING] first_crate v0.1.0 ([..]) +[FINISHED] [..]")); + + assert_that(p.cargo("build").cwd(p.root().join("second_crate")), + execs().with_status(0) + .with_stdout("") + .with_stderr("\ +[COMPILING] second_crate v0.1.0 ([..]) +[FINISHED] [..]")); +} + + #[test] fn override_to_path_dep() { Package::new("foo", "0.1.0").dep("bar", "0.1").publish(); -- 2.30.2